Android Bugs

您所在的位置:网站首页 surface 息屏持续播放 Android Bugs

Android Bugs

2024-07-11 07:17| 来源: 网络整理| 查看: 265

原因:

当Activity进入onPause状态之后,SurfaceView会被销毁,进而回调surfaceDestroyed()方法,当你程序从后台切到前台恢复时,SurfaceView并没有重新创建,所以就会出现有声音没画面的情况。

解决方法:

监听SurfaceHolder的callback回调,在surfaceCreated和surfaceDestroyed中处理播放器的播放和停止。代码如下:

getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { Log.d(TAG, "surfaceCreated"); isReady = true; player.setDisplay(getHolder()); if (!"".equals(url) && !player.isPlaying()) { try { player.reset(); player.setDataSource(url); player.prepare(); player.seekTo(position); Log.d(TAG, "续播时间:" + position); } catch (IOException e) { e.printStackTrace(); } } } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { Log.d(TAG, "surfaceChanged"); } @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) { isReady = false; Log.d(TAG, "surfaceDestroyed"); if (player.isPlaying()) { position = player.getCurrentPosition(); Log.d(TAG, "当前播放时间:" + position); player.stop(); } } });

完整的MediaPlayer+SurfaceView使用例子参考另一片博文MediaPlayer+SurfaceView完整例子。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3